/**
 * @file example_001.cpp
 * @author 逆流 (1171267147@qq.com)
 * @brief 通过glut加载opengl窗口
 * @version 1.0
 * @date 2025-06-22
 *
 * @copyright Copyright (c) 2025
 *
 */
#include <GL/freeglut.h>

void display() {
    glClear(GL_COLOR_BUFFER_BIT);
    glClearColor(0.2, 0.3, 0.4, 1.0);
    glFinish();
}

int main(int argc, char** argv) {
    glutInit(&argc, argv);

    // \brief 设置显示模式
    // \param GLUT_RGB: RGB颜色
    // \param GLUT_SINGLE: 单窗口模式
    // \param GLUT_DOUBLE: 启用双窗口缓冲
    // \param GLUT_MULTISAMOLE: 启用多重采样缓冲区
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

    glutInitWindowPosition(400, 400);
    glutInitWindowSize(640, 480);
    glutCreateWindow("Hello OpenGL");

    // 设置glut主循环线程退出后返回主函数
    glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS);

    // 通过回调函数注册窗口显示逻辑
    glutDisplayFunc(display);
    glutIdleFunc(display);

    // 启动主循环
    glutMainLoop();

    return 0;
}
